/**
 * @author Juko, Apocrypha
 */
package ganga.custodian.settings;

import ganga.custodian.CustodianApplication;
import ganga.custodian.R;
import ganga.custodian.human.PhysicalActivityMode;
import ganga.custodian.sensors.AccelerometerMonitor;
import ganga.custodian.ui.Builder;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.TextView;

/**
 * Активити для проведения калибровки акселерометра
 * 
 * @author Apocrypha
 * 
 */
public class CalibrationActivity extends Activity {

	TextView isRecordMessage;
	Button actionButton;
	AccelerometerMonitor monitor;
	Builder builder = new Builder(this);

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.calibrationactivity);

		buildActivity();
		setCurrentTheme();
	}
	@Override
	protected void onResume() {
		super.onResume();
		setCurrentTheme();
	}
	private void buildActivity() {
		builder.buildSpinner(R.id.positionSpiner, R.array.BodyPosition);
		builder.buildSpinner(R.id.activitySpinner, R.array.ActivityMode);
		builder.buildSpinner(R.id.movementSpinner, R.array.MovementMode);

		isRecordMessage = (TextView) findViewById(R.id.isRecordMessage);
		actionButton = (Button) findViewById(R.id.ClibrationActivityButton);
		monitor = CustodianApplication.getInstance().accelerometerMonitor;
	}
	private void setCurrentTheme() {
		LinearLayout thisLayout = (LinearLayout) findViewById(R.id.calibrovkaLayout);
		thisLayout
				.setBackgroundColor(CustodianApplication.getInstance().selectTheme.backGround);
		TextView tv1 = (TextView) findViewById(R.id.calibroTV1);
		tv1.setTextColor(CustodianApplication.getInstance().selectTheme.firstColour);
	}

	@Deprecated
	private PhysicalActivityMode getSelectedMode() {
		Spinner calibroSpiner = (Spinner) findViewById(R.id.positionSpiner);
		int select = calibroSpiner.getSelectedItemPosition();
		if (select <= 2) {
			return PhysicalActivityMode.REST;
		}
		if ((select > 2) && (select <= 4)) {
			return PhysicalActivityMode.IN_PLACE_ACTIVITY;
		}
		if ((select > 4) && (select <= 7)) {
			return PhysicalActivityMode.WALK;
		}
		if ((select > 7) && (select <= 10)) {
			return PhysicalActivityMode.RUN;
		}
		if ((select > 10) && (select <= 12)) {
			return PhysicalActivityMode.ON_TRANSPORT;
		}
		return null;
	}
	@Deprecated
	private String getSelectedModeDetail() {
		String[] modes = { "Лежать", "Сидеть", "Cтоять",
				"Печать на клавиатуре",
				"Разминочный комплекс(Махи руками, наклоны,приседания)",
				"Прогулочным шагом", "В нормальном темпе", "Быстрая",
				"Трусцой", "Средний", "Быстрый", "Велосипед",
				"Автобус, троллейбус" };
		Spinner calibroSpiner = (Spinner) findViewById(R.id.positionSpiner);
		int selected = calibroSpiner.getSelectedItemPosition();

		return modes[selected];
	}

	/*
	 * Начать/закончить записывать калибровочные данные акселерометра
	 */
	public void startOrStopRecord(View v) {
		if (monitor.isRecording) {
			isRecordMessage.setText("Сохранение данных...");
			isRecordMessage.invalidate();
			monitor.saveFromBuffer();
			monitor.stopRecord();
			actionButton.setText("Старт");
			isRecordMessage.setTextColor(Color.BLACK);
			isRecordMessage.setText("Нажмите для записи");
		} else {
	        String position = getSpinnerItem(R.id.positionSpiner);
            String activity = getSpinnerItem(R.id.activitySpinner);
            String movement = getSpinnerItem(R.id.movementSpinner);
			monitor.startRecord(position, activity, movement);
			actionButton.setText("Стоп");
			isRecordMessage.setTextColor(Color.RED);
			isRecordMessage.setText("Получение данных...");
		}
	}

	private String getSpinnerItem(int id) {
		Spinner aSpiner = (Spinner) findViewById(id);
		int selected = aSpiner.getSelectedItemPosition();
		return Integer.toString(selected);
	}
}